/**
 * 
 */
package br.edu.unifei.cct720.trabalho05.utils.formas;

import java.awt.Color;

import br.edu.unifei.cct720.trabalho05.utils.ponto.Ponto;
import br.edu.unifei.cct720.trabalho05.utils.ponto.Pontos;

/**
 * Classe representativa da forma
 * geometrica de um retangulo
 * 
 * @author fknappe
 *
 */
public class Retangulo implements FormaGeometrica {
	
	// Declaracao das variaveis de instancia
	private Ponto inicio;
	private Ponto fim;
	private Ponto p2;
	private Ponto p3;
	private Color cor;
	
	/**
	 * Construtor
	 * 
	 * @param Ponto inicio
	 * @param Ponto fim
	 * @param Color cor
	 */
	public Retangulo(Ponto inicio, Ponto fim, Color cor) {
		this.inicio = inicio;
		this.fim = fim;
		this.cor = cor;

		p2 = new Ponto(inicio.getX(), fim.getY(), cor);
		p3 = new Ponto(fim.getX(), inicio.getY(), cor);
	}

	/**
	 * Metodo responsavel por retornar o 
	 * conjunto de pontos contidos
	 * no retangulo
	 * 
	 * @return void
	 */
	public Pontos getPontos() {		
		Pontos pontos = new Pontos();
		pontos.addAll(new Reta(inicio, p2, cor).getPontos());
		pontos.addAll(new Reta(inicio, p3, cor).getPontos());
		pontos.addAll(new Reta(fim, p2, cor).getPontos());
		pontos.addAll(new Reta(fim, p3, cor).getPontos());
		
		return pontos;
	}
	
	/**
	 * Metodo responsavel por retonar
	 * todos os vertices do retangulo
	 * 
	 * @return Pontos
	 */
	public Pontos getVertices() {
		Pontos vertices = new Pontos();
		vertices.add(inicio);
		vertices.add(p3);
		vertices.add(fim);
		vertices.add(p2);
		
		return vertices;
	}

	
	// Metodos getters e setters
	public Ponto getInicio() {
		return inicio;
	}

	public Ponto getFim() {
		return fim;
	}
	
	public Ponto getP2() {
		return p2;
	}
	
	public void setP2(Ponto p2) {
		this.p2 = p2;
	}

	public Ponto getP3() {
		return p3;
	}
	
	public void setP3(Ponto p3) {
		this.p3 = p3;
	}
	
	public Color getCor() {
		return cor;
	}
}
